import * as XLSX from 'xlsx';
import { saveAs } from 'file-saver';

/**
 * 导出 Excel 文件
 * @param {Array} data - 要导出的数据数组
 * @param {string} fileName - 文件名（不带后缀）
 * @param {Array} headers - 表头配置，格式示例：[{ key: 'name', label: '姓名' }, { key: 'age', label: '年龄' }]
 */
export function exportExcel(data, fileName = 'export', headers = []) {
  // 1. 转换数据为工作表格式
  const worksheetData = [
    headers.map(header => header.label), // 表头行
    ...data.map(item => headers.map(header => item[header.key]))
  ];

  // 2. 创建工作表
  const worksheet = XLSX.utils.aoa_to_sheet(worksheetData);

  // 3. 创建工作簿并添加工作表
  const workbook = XLSX.utils.book_new();
  XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');

  // 4. 生成 Excel 文件并保存
  const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });
  const blob = new Blob([excelBuffer], { type: 'application/octet-stream' });
  saveAs(blob, `${fileName}_${new Date().getTime()}.xlsx`);
}
